// 项目配置文件

// 获取环境变量
const NODE_ENV = process.env.NODE_ENV || 'development';
const API_URL = process.env.API_URL || '/';
const APP_VERSION = 'v2.2';

// 根据环境选择配置
const config = {
  // 开发环境配置
  development: {
    // 应用基本信息
    app: {
      name: 'H5-PWA Template (Dev)',
      version: APP_VERSION,
      description: 'A modern PWA template with Webpack and ES modules',
    },

    // API配置
    api: {
      baseUrl: API_URL,
      timeout: 5000,
      retryCount: 3,
      retryDelay: 1000,
      headers: {
        'Content-Type': 'application/json',
        'X-App-Version': APP_VERSION,
      },
    },

    // 缓存配置
    cache: {
      enabled: false,
      maxAge: 0,
      prefix: 'pwa-dev-',
    },

    // 开发服务器配置
    server: {
      port: 0, // 自动选择可用端口
      host: '127.0.0.1',
      hotReload: true,
      openBrowser: false,
      headers: {
        'Cache-Control': 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0',
        Pragma: 'no-cache',
        Expires: '0',
      },
    },

    // 日志配置
    logging: {
      level: 'debug',
      console: true,
      file: false,
    },

    // Service Worker配置
    sw: {
      enabled: false,
      updateInterval: 0,
    },
  },

  // 生产环境配置
  production: {
    // 应用基本信息
    app: {
      name: 'H5-PWA Template',
      version: APP_VERSION,
      description: 'A modern PWA template with Webpack and ES modules',
    },

    // API配置
    api: {
      baseUrl: API_URL,
      timeout: 10000,
      retryCount: 3,
      retryDelay: 1500,
      headers: {
        'Content-Type': 'application/json',
        'X-App-Version': APP_VERSION,
      },
    },

    // 缓存配置
    cache: {
      enabled: true,
      maxAge: 60 * 60 * 24, // 24小时
      prefix: 'pwa-prod-',
    },

    // 服务器配置
    server: {
      port: 3000,
      host: '0.0.0.0',
      headers: {
        'Cache-Control': 'public, max-age=31536000',
        'Strict-Transport-Security': 'max-age=31536000; includeSubDomains; preload',
      },
    },

    // 日志配置
    logging: {
      level: 'error',
      console: false,
      file: true,
      file_path: 'logs/app.log',
    },

    // Service Worker配置
    sw: {
      enabled: true,
      updateInterval: 60 * 60 * 1000, // 1小时
    },
  },
};

// 导出当前环境的配置
const currentConfig = config[NODE_ENV];

// 导出所有配置，便于调试和切换环境
module.exports = {
  config: currentConfig,
  allConfigs: config,
  env: NODE_ENV,
  version: APP_VERSION,
};

// 也导出为ES模块，方便前端代码使用
export default currentConfig;
export {
  currentConfig, config as allConfigs, NODE_ENV as env, APP_VERSION as version,
};
